Add an auxiliary ident parsing function
authorMatthias Clasen <mclasen@redhat.com>
Mon, 18 Sep 2017 14:55:36 +0000 (10:55 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 18 Sep 2017 18:26:57 +0000 (14:26 -0400)
This lets us conveniently create ident values from
multiple candidates.

gtk/gtkcssstringvalue.c
gtk/gtkcssstringvalueprivate.h

index c12eb7661bcd5bb4ebd66b6e8cbff657fbe3382c..ad29def9a13b34897fd67cb45be9ad80f4b01631 100644 (file)
@@ -203,6 +203,34 @@ _gtk_css_ident_value_try_parse (GtkCssParser *parser)
   return _gtk_css_ident_value_new_take (ident);
 }
 
+GtkCssValue *
+_gtk_css_ident_value_try (GtkCssParser *parser,
+                          const char   *ident,
+                          ...)
+{
+  va_list args;
+  const char *name;
+  GtkCssValue *value = NULL;
+
+  name = ident;
+
+  va_start (args, ident);
+
+  while (name)
+    {
+      if (_gtk_css_parser_try (parser, name, TRUE))
+        {
+          value = _gtk_css_ident_value_new (name);
+          break;
+        }
+      ident = va_arg (args, const char *);
+    }
+
+  va_end (args);
+
+  return value;
+}
+
 const char *
 _gtk_css_ident_value_get (const GtkCssValue *value)
 {
index 5fb703b6e3b5f8f5b38df01cb5b2134dd6391e2a..0aaa9ec8af6e377d1100231f1150223d14cb7027 100644 (file)
@@ -29,6 +29,9 @@ G_BEGIN_DECLS
 GtkCssValue *   _gtk_css_ident_value_new            (const char             *ident);
 GtkCssValue *   _gtk_css_ident_value_new_take       (char                   *ident);
 GtkCssValue *   _gtk_css_ident_value_try_parse      (GtkCssParser           *parser);
+GtkCssValue *   _gtk_css_ident_value_try            (GtkCssParser           *parser,
+                                                     const char             *ident,
+                                                     ...);
 
 const char *    _gtk_css_ident_value_get            (const GtkCssValue      *ident);